
#ifndef Boolean_h
#define Boolean_h

#include "System/Object.h"
#include "System/IComparable.h"
#include "System/IFormattable.h"
#include "System/IConvertible.h"
#include "System/Generic/IComparable.h"
#include "System/Generic/IEquatable.h"
#include "System/Globalization/NumberStyles.h"

namespace Riccsson
{
	namespace System
	{
		// Summary:
		//     Represents an 8-bit unsigned integer.
		struct Boolean
			: public Object
			, public Riccsson::System::IComparable
			, public Riccsson::System::IFormattable
			//, public Riccsson::System::IConvertible
			, public Riccsson::System::Generic::IComparable<Boolean>
			, public Riccsson::System::Generic::IEquatable<Boolean>
		{
			// Summary:
			//     Represents the Boolean value false as a string. This field is read-only.
			public: static const GC_PTR<string> FalseString;
			//
			// Summary:
			//     Represents the Boolean value true as a string. This field is read-only.
			public: static const GC_PTR<string> TrueString;

			REGISTER_CLASS(Boolean);

			// Summary:
			//     Compares this instance to a specified System.Boolean object and returns an
			//     integer that indicates their relationship to one another.
			//
			// Parameters:
			//   value:
			//     A System.Boolean object to compare to this instance.
			//
			// Returns:
			//     A signed integer that indicates the relative values of this instance and
			//     value.Return Value Condition Less than zero This instance is false and value
			//     is true. Zero This instance and value are equal (either both are true or
			//     both are false). Greater than zero This instance is true and value is false.
			public: int CompareTo(Boolean* value)
			{
				throw;
			}

			//
			// Summary:
			//     Compares this instance to a specified object and returns an integer that
			//     indicates their relationship to one another.
			//
			// Parameters:
			//   obj:
			//     An object to compare to this instance, or null.
			//
			// Returns:
			//     A signed integer that indicates the relative order of this instance and obj.Return
			//     Value Condition Less than zero This instance is false and obj is true. Zero
			//     This instance and obj are equal (either both are true or both are false).
			//     Greater than zero This instance is true and obj is false.-or- obj is null.
			//
			// Exceptions:
			//   System.ArgumentException:
			//     obj is not a System.Boolean.
			public: int CompareTo(object* value)
			{
				throw;
			}

			//
			// Summary:
			//     Returns a value indicating whether this instance is equal to a specified
			//     System.Boolean object.
			//
			// Parameters:
			//   obj:
			//     A System.Boolean value to compare to this instance.
			//
			// Returns:
			//     true if obj has the same value as this instance; otherwise, false.
			public: bool Equals(Boolean* obj)
			{
				throw;
			}

			//
			// Summary:
			//     Returns a value indicating whether this instance is equal to a specified
			//     object.
			//
			// Parameters:
			//   obj:
			//     An object to compare to this instance.
			//
			// Returns:
			//     true if obj is a System.Boolean and has the same value as this instance;
			//     otherwise, false.
			public: override bool Equals(const object* obj)
			{
				throw;
			}

			//
			// Summary:
			//     Returns the hash code for this instance.
			//
			// Returns:
			//     A hash code for the current System.Boolean.
			public: override int GetHashCode()
			{
				throw;
			}

			//
			// Summary:
			//     Returns the System.TypeCode for value type System.Boolean.
			//
			// Returns:
			//     The enumerated constant, System.TypeCode.Boolean.
			public: TypeCode GetTypeCode()
			{
				throw;
			}

			//
			// Summary:
			//     Converts the specified string representation of a logical value to its System.Boolean
			//     equivalent, or throws an exception if the string is not equivalent to the
			//     value of System.Boolean.TrueString or System.Boolean.FalseString.
			//
			// Parameters:
			//   value:
			//     A string containing the value to convert.
			//
			// Returns:
			//     true if value is equivalent to the value of the System.Boolean.TrueString
			//     field; false if value is equivalent to the value of the System.Boolean.FalseString
			//     field.
			//
			// Exceptions:
			//   System.ArgumentNullException:
			//     value is null.
			//
			//   System.FormatException:
			//     value is not equivalent to the value of the System.Boolean.TrueString or
			//     System.Boolean.FalseString field.
			public: static Boolean Parse(string* s)
			{
				throw;
			}

			//
			// Summary:
			//     Converts the value of this instance to its equivalent string representation
			//     (either "True" or "False").
			//
			// Returns:
			//     System.Boolean.TrueString if the value of this instance is true, or System.Boolean.FalseString
			//     if the value of this instance is false.
			public: override GC_PTR<string> ToString()
			{
				throw;
			}

			//
			// Summary:
			//     Converts the value of this instance to its equivalent string representation
			//     (either "True" or "False").
			//
			// Parameters:
			//   provider:
			//     (Reserved) An System.IFormatProvider object.
			//
			// Returns:
			//     System.Boolean.TrueString if the value of this instance is true, or System.Boolean.FalseString
			//     if the value of this instance is false.
			public: GC_PTR<string> ToString(IFormatProvider* provider)
			{
				throw;
			}
					
			public: override GC_PTR<string> ToString(string* format, IFormatProvider* formatProvider)
			{
				throw;
			}

			//
			// Summary:
			//     Tries to convert the specified string representation of a logical value to
			//     its System.Boolean equivalent. A return value indicates whether the conversion
			//     succeeded or failed.
			//
			// Parameters:
			//   value:
			//     A string containing the value to convert.
			//
			//   result:
			//     When this method returns, if the conversion succeeded, contains true if value
			//     is equivalent to System.Boolean.TrueString or false if value is equivalent
			//     to System.Boolean.FalseString. If the conversion failed, contains false.
			//     The conversion fails if value is null or is not equivalent to the value of
			//     either the System.Boolean.TrueString or System.Boolean.FalseString field.
			//
			// Returns:
			//     true if value was converted successfully; otherwise, false.
			public: static bool TryParse(string* s, Boolean out result)
			{
				throw;
			}
		};

		typedef Boolean boolean;
	}
}

#endif